import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

// 使用两个集合分别存储 nums1 和 nums2 的元素
// 利用集合的 O(1) 查找特性快速判断公共元素
public class Main2 {
    public static List<Integer> findCommonElements(int[] nums1, int[] nums2) {
        Set<Integer> set1 = new HashSet<>();
        Set<Integer> common = new HashSet<>();

        // 将 nums1 的元素存入 set1
        for (int num : nums1) {
            set1.add(num);
        }
        // 遍历 nums2，检查是否在 set1 中
        for (int num : nums2) {
            if (set1.contains(num)) {
                common.add(num); // 自动去重
            }
        }

        return new ArrayList<>(common);
    }

    public static void main(String[] args) {
        int[] nums1 = {1, 2};
        int[] nums2 = {2, 2, 2, 2};
        List<Integer> result = findCommonElements(nums1, nums2);
        System.out.println(result); // 输出 [2]
    }
}